\documentclass[UTF8]{ctexart}

\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{ctex}
\setlength{\parindent}{2em}

\title{Homework 6:图的模板类设计}

\author{唐瑞良\\ 强基工程力学 3210105852}

\begin{document}

\maketitle
\section{设计思路}
\indent 我首先从图的顶点入手，所以我设定了$graph\_node$的结构体，并设定了$node\_list$存储全部顶点的地址。$graph\_node$类中包含了顶点的名字，顶点的$id$，以及包含顶点的边的信息。\\
\indent 考虑到要实现邻接表和邻接矩阵两种存储方式，我在$graph\_node$结构体内设定了两种存储方式，分别为$edges\_table$和$edges\_matrix$。根据用户的需求，分别选择模式$0$和$1$。$edges\_table$是一个储存包含链接信息的结构体地址的数组。包含链接信息的结构体$link\_info$包含了与$edges\_table$从属的节点连接的节点的$id$和长度。\\
\indent 对于输入，我选择了首先让程序询问要输入的节点个数，而后依次让用户为节点命名，最后以$id\_1$,$id\_2$或$id\_1$,$id\_2$,$length$的形式逐个输入全部边的信息。前者默认$length$为$1$。如果完成全部输入，需要在最后一个输入后以$s$结尾，使输入结束。\\
\indent 至于$ListVertexes$和$ListEdges$，前者只需遍历$node\_list$并逐行输出$node\_id:node\_name$，后者同理，只不过在前者的基础上增加了$edges\_XX$的遍历。
\end{document}
